package thread;

public class SyncDemo2 {
    public static void main(String[] args) {
        Shop shop = new Shop();
        Thread li = new Thread("李宝"){
            public void run(){
                shop.buy();
            }
        };

        Thread tang = new Thread("唐磊"){
            public void run(){
                shop.buy();
            }
        };

        li.start();
        tang.start();
    }
}

class Shop{
//    public synchronized void buy(){
    public void buy(){
        try {
            Thread t = Thread.currentThread();
            System.out.println(t.getName()+"：正在挑衣服...");
            Thread.sleep(5000);
            /**
             * 同步监视器
             * 必须是一个引用类型
             * 同个线程看到的必须是同个对象
             *
             * */
            synchronized (this){//只有监视同一个对象，才能有牵制关系，并且排队；new 一定无效
                System.out.println(t.getName()+"：正在试衣服...");
                Thread.sleep(5000);
            }
            System.out.println(t.getName()+"：结账离开");
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}
